﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GeometryMod.Models
{
    using System;
    using System.Windows.Media.Media3D;

    public struct Point3D
    {
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }

        public Point3D(double x, double y, double z)
        {
            X = x;
            Y = y;
            Z = z;
        }
        public Point3D(float x, float y, float z)
        {
            X = x;
            Y = y;
            Z = z;
        }
    }

    public struct Line3D
    {
        public Point3D Point1 { get; } = default(Point3D);
        public Point3D Point2 { get; } = default(Point3D);

        public Line3D(double x1, double y1,double z1,
            double x2, double y2, double z2)
        {
            Point1 = new Point3D(x1,y1,z1);
            Point2 = new Point3D(x2,y2,z2);
            DirVector = new (x2-x1,y2-y1,z2-z1);    
        }

        public Line3D(Point3D p1, Point3D p2)
        {
            (Point1, Point2) = (p1, p2);
            DirVector = new(p2.X - p1.X,p2.Y - p1.Y,p2.Z - p1.Z );
        }

        public Vector3D DirVector { get;private set; } = default;

        public Line3D(Point3D point,Vector3D dirVector)
        {
            Point1 = point;
            Point2 = new (point.X + dirVector.X,point.Y + dirVector.Y ,point.Z + dirVector.Z);
            DirVector = dirVector;
        }

    }




}
